﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DAL
{
    public partial class DocumentoVenta
    {
        public void AddSet(dbGestionDataContext _db,
                    int idProyecto,
                    DateTime fecha,
                    int idCliente,
                    int idTipoDocumentoCliente,
                    string documentoCliente,
                    string nombreCliente,
                    string direccion,
                    int idMoneda,
                    int idDocumentoTipo,
                    string serie,
                    string numeroDoc,
                    decimal tipoCambio,
                    int idOrdenVentaItem,
                    string comentario,
                    int idEmpleadoCre,
                    string empleadoCre,
                    int idEstado
                    )
        {
            this.idProyecto = idProyecto;
                    this.idTipoDocCliente = idTipoDocumentoCliente;
                    this.documentoCliente = documentoCliente;
                    this.fecha = fecha;
                    this.idCliente = idCliente;
                    this.nombreCliente = nombreCliente;
                    this.direccion = direccion;
                    this.idMoneda = idMoneda;
                    this.idDocumentoTipo = idDocumentoTipo;
                    this.serie = serie;
                    this.numeroDoc = numeroDoc;
                    this.tipoCambio = tipoCambio;
                    this.idOrdenVentaItem = idOrdenVentaItem;
                    this.total = 0;
                    this.IGVTotal = 0;
                    this.SubTotal = 0;
                    this.idUsuarioCre = idEmpleadoCre;
                    this.usuarioCre = empleadoCre;
                    this.fechaCre =DateTime.Now;
                    this.bitAfecto = false;
                    this.comentario = comentario;
                    this.bitAnulado = false;
                    this.idEstado=idEstado;
                    _db.DocumentoVentas.InsertOnSubmit(this);
}
        public void updateTotal(dbGestionDataContext _db)
        {

               this.total = _db.DocumentoVentaItems.Where(p=>p.idDocumentoVenta==this.idInternal).Sum(P=>P.total);
               this.IGVTotal = _db.DocumentoVentaItems.Where(p => p.idDocumentoVenta == this.idInternal).Sum(P => P.IGVTotal);
               this.SubTotal = _db.DocumentoVentaItems.Where(p => p.idDocumentoVenta == this.idInternal).Sum(P => P.subTotal);
        }
       
        public void UpdateSet(
                    int idCliente,
                    string nombreCliente,
                    string direccion,
                    int idMoneda,
                    int idDocumentoTipo,
                    string serie,
                    string numeroDoc,
                    decimal tipoCambio,
                    int idOrdenVentaItem,
                    int idEmpreadoMod,
                    string empleadoMod)
        {
                    this.idCliente = idCliente;
                    this.nombreCliente = nombreCliente;
                    this.direccion = direccion;
                    this.idMoneda = idMoneda;
                    this.idDocumentoTipo = idDocumentoTipo;
                    this.serie = serie;
                    this.numeroDoc = numeroDoc;
                    this.tipoCambio = tipoCambio;
                    this.idOrdenVentaItem = idOrdenVentaItem;
                    
                    this.fechaCre = DateTime.Now;
                    this.bitAfecto = bitAfecto;
                    this.comentario = comentario;
        }

        public void UpdateAnula( string usuarioAnula,
                                int idUsuarioAnula,
                                int idMotivoAnula)
        {
            this.idMotivoAnula = idMotivoAnula;
            this.usuarioAnula = usuarioAnula;
            this.idUsuarioAnula = idUsuarioAnula;
            this.fechaAnula = DateTime.Now;
            
        }


       

        //public int getidAnterior(dbGestionDataContext _db, int idinternal, int idEtapa)
        //{
        //    int intAnterior = 0;

        //    int c = _db.OrdenVentas.Where(p => p.idInternal < idinternal & p.idEtapa == idEtapa).Count();
        //    if (c == 0)
        //    {
        //        throw new Exception("No existe Registros");
        //    }
        //    else
        //    {
        //        intAnterior = _db.OrdenVentas.Where(a => a.idInternal < idinternal & a.idEtapa == idEtapa).Max(a => a.idInternal);

        //    }


        //    return intAnterior;

        //}
        //public int getidSiguiente(dbGestionDataContext _db, int idinternal, int idEtapa)
        //{
        //    int intSiguiente = 0;

        //    //revisar la sentencia generada

        //    int c = _db.OrdenVentas.Where(p => p.idInternal > idinternal & p.idEtapa == idEtapa).Count();

        //    if (c == 0)
        //    {
        //        throw new Exception("No existe Registros");
        //    }
        //    else
        //    {
        //        intSiguiente = _db.OrdenVentas.Where(p => p.idInternal > idinternal & p.idEtapa == idEtapa).Min(a => a.idInternal);
        //    }

        //    return intSiguiente;
        //}


        public void AnularSet(int idMotivoAnula,int idUsuarioAnula,string usuarioAnula)
        {
            this.idEstado = 12;//Anulado
            this.bitAnulado = true;
            this.usuarioAnula =usuarioAnula;
            this.idMotivoAnula = idMotivoAnula;
            this.idUsuarioAnula = idUsuarioAnula;
            this.fechaAnula = DateTime.Now;
        }

}
}
